.. _cmlOverrideSpeedSet: cmlOverrideSpeedSet ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmlOverrideSpeedSet ([in] VT_I4 BoardId, [in] VT_I4 Channel) DESCRIPTION ````````````` - 이 함수는 단축 모션이 진행되고 있는 중에 속도를 오버라이딩하고자할 때 사용하는 함수입니다. 속도를 오버라이딩하기 위해서는 먼저 cmlCfgSetSpeedPattern() 속도 패턴 설정 함수를 통하여 변경하고자 하는 속도 또는 가속도값을 설정하고나서 이 함수를 수행해야합니다. \ - 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다. PARAMETER ````````````` ▶ BoardId: 사용자가 설정한 디바이스(보드) ID. ▶ Channel : 축(채널) 번호. 축번호는 상수값으로 3번째 채널을 기준 채널로 임의의 채널을 설정할 수 있습니다. RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | 음수 | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ REFERENCE ``````````````` - 직선, 원호, 헬리컬 보간작업을 수행하는 경우에는 속도 오버라이딩을 사용할 수 없습니다. EXAMPLE ``````````` - 본 예제는 cmlOverrideSpeedSet()함수를 사용하여 속도를 오버라이딩하는 것을 예로 보여주는 코드입니다. 본 예제는 “HIGH” 와 “LOW” 로 이름지어진 두 개의 버튼이 있다고 가정하고 “HIGH” 버튼이 눌리면 X1축의 속도를 20000으로 설정하고 “LOW” 버튼이 눌리면 속도를 10000으로 설정하는 예입니다. .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ // BoardID 는 0 으로 선언되었다고 가정함 #include "ComiMLink2_SDK.h" #include "ComiMLink2_SDK_Def.h" #define V_LOW 10000 // 저속모드 속도 #define V_HIGH 20000 // 고속모드 속도 /*************************************************************** * OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이 * 적용되는 부분을 의미합니다. ***************************************************************/ void OnProgramInitial() { long m_nNumDevices; long m_DeviceList[16]; long m_nNumAxes; cmlLoadDll(); if(cmlGnDeviceLoad(&m_nNumDevices, m_DeviceList, &m_nNumAxes)!= ERR_NONE) { //Handle 은 사용자가 생성한 폼의 핸들 값입니다. // 에러메시지 출력 return; } } /************************************************************** * OnStart() : 이 함수는 가상의 함수로서 X축에 대하여 V-MOVE 모션을 시작합니다. **************************************************************/ void OnStart() { long nIsDone; // 해당축이 작업중이면 정지(停止)하고 다시 시작 // cmlSxIsDone(BoardID, 0, &nIsDone); if(nIsDone != cmlTRUE) cmlSxStopEmg(0); // 속도설정 => 시작은 LOW 속도로 시작 // cmlCfgSetSpeedPattern(BoardID, 0, cmlSMODE_S, V_LOW, 50000, 50000,0,0); // V-Move start // if(cmlSxVMoveStart(BoardID, 0, cmDIR_P)){ // 에러메시지 출력 return; } } /************************************************************** * OnHighButtonClick() : ‚HIGH‛ 버튺 콜백함수 (가상함수) * ‚HIGH‛버튺이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다. **************************************************************/ void OnHighButtonClick() { // V_HIGH 속도로 오버라이딩 // cmlSxSetSpeedRatio(BoardID, 0, cmlSMODE_S, , 200, 100, 100,0,0); //아래 코드로 대체가 가능합니다. //cmlCfgSetSpeedPattern(BoardID, 0, cmlSMODE_S, V_HIGH, 50000, 50000,0,0); if(cmlOverrideSpeedSet (0) != ERR_NONE){ // 에러메시지 출력 return; } } /************************************************************** * OnLowButtonClick() : ‚LOW‛ 버튺 콜백함수 (가상함수) * ‚LOW‛버튺이 클릭되면 속도를 V_LOW 속도로 오버라이드한다. **************************************************************/ void OnLowButtonClick() { // V_LOW 속도로 오버라이딩 // cmlSxSetSpeedRatio(BoardID, 0, cmlSMODE_S, , 100, 100, 100); //아래 코드로 대체가 가능합니다. //cmlCfgSetSpeedPattern(BoardID, 0, cmlSMODE_S, V_LOW, 50000, 50000,0,0); if(cmlOverrideSpeedSet (0) != ERR_NONE){ // 에러메시지 출력 return; } } /************************************************************** * OnStop() : ‚Stop‛명령시에 호출되는 가상의 함수 **************************************************************/ void OnStop() { cmlSxStopEmg(0); } .. code-block:: c++ :linenos: Visual Basic ‘BoardID 는 0으로 선언되었다고 가정함 '/************************************************************** '* OnStart() : 이 함수는 가상의 함수로서 X축에 대하여 V-MOVE 모션을 ‘*시작합니다. '**************************************************************/ Private Sub OnStart() Dim nIsDone As Long '해당축이 작업중이면 정지(停止)하고 다시 시작 Call SxIsDone(BoardID, 0, nIsDone) If (nIsDone <> cmlTRUE) Then SxStopEmg (0) End If '시작은 LOW 속도로 시작 Call CfgSetSpeedPattern(BoardID, 0, cmlMODE_S, 10000, 50000, 50000) If (SxVMoveStart(BoardID, 0, cmDIR_P)) Then // 에러메시지 출력 End If End Sub '/************************************************************** '* OnHighButtonClick() : "HIGH" 버튺 콜백함수 (가상함수) '* "HIGH"버튺이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다. '**************************************************************/ Private Sub OnHighButtonClick() 'V_HIGH 속도로 오버라이딩 Call SxSetSpeedRatio(BoardID, 0, cmlSMODE_S, 200, 100, 100) '아래 코드로 대체가 가능합니다. 'Call CfgSetSpeedPattern(BoardID, 0, cmlSMODE_S, 20000, 50000, 50000) If (OverrideSpeedSet(0) <> ERR_NONE) Then // 에러메시지 출력 End If End Sub '/************************************************************** '* OnLowButtonClick() : "LOW" 버튺 콜백함수 (가상함수) '* "LOW"버튺이 클릭되면 속도를 V_LOW 속도로 오버라이드한다. '**************************************************************/ Private Sub OnLowButtonClick() 'V_LOW 속도로 오버라이딩 Call CfgSetSpeedPattern(BoardID, 0, cmlSMODE_S, 10000, 50000, 50000) If (OverrideSpeedSet(0) <> ERR_NONE) Then // 에러메시지 출력 End Sub `/************************************************************** `* OnStop() : ‚Stop‛명령시에 호출되는 가상의 함수 `**************************************************************/ Private Sub OnStop() Call SxStopEmg(0) End Sub